Calendar All Tests
Current file: /home/estudydev/workspace/eStudy_svn/web/teams/classes/class.userteammanagement.inc.php
Legend: executed not executed dead code

  Coverage
  Classes Methods Lines
Total
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 9
0.00 %0.00%
0.00% 0 / 185
 
UserTeamManagement
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 9
0.00 %0.00%
0.00% 0 / 185
 public function UserTeamManagement($courseID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 9
 public function getTeamOfUser($userID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 8
 public function getUsersOfTeam($teamID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 9
 public function listTeams()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 62
 public function showUserTeamForm()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 35
 public function setTeamForUser($userID, $teamID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 22
 public function showTeamAssignmentForms()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 12
 public function assignUsersToTeam($teamID, $users)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 27
 public function getUserIDs()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 1


       1                 : <?php                                                                                                                                                                                                                                                                                                                        
       2                 : /*--------------------------------------------------------------------------+                                                                                                                                                                                                                                                
       3                 :  This file is part of eStudy.                                                                                                                                                                                                                                                                                                
       4                 :  teams/classes/class.userteammanagement.inc.php                                                                                                                                                                                                                                                                              
       5                 :  - Modulgruppe:  Teams                                                                                                                                                                                                                                                                                                       
       6                 :  - Beschreibung: Klasse zum Verwalten der Team-Zuordnungen der Teilnehmer.                                                                                                                                                                                                                                                   
       7                 :  - Version:      0.3, 19/11/06                                                                                                                                                                                                                                                                                               
       8                 :  - Autor(en):    Clemens Weiß <clemens.weiss@mni.fh-giessen.de>                                                                                                                                                                                                                                                             
       9                 :  +---------------------------------------------------------------------------+                                                                                                                                                                                                                                               
      10                 :  This program is free software; you can redistribute it and/or                                                                                                                                                                                                                                                               
      11                 :  modify it under the terms of the GNU General Public License                                                                                                                                                                                                                                                                 
      12                 :  as published by the Free Software Foundation; either version 2                                                                                                                                                                                                                                                              
      13                 :  of the License, or any later version.                                                                                                                                                                                                                                                                                       
      14                 :  +---------------------------------------------------------------------------+                                                                                                                                                                                                                                               
      15                 :  This program is distributed in the hope that it will be useful,                                                                                                                                                                                                                                                             
      16                 :  but WITHOUT ANY WARRANTY; without even the implied warranty of                                                                                                                                                                                                                                                              
      17                 :  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                                                                                                                                                                                                                                               
      18                 :  GNU General Public License for more details.                                                                                                                                                                                                                                                                                
      19                 :  You should have received a copy of the GNU General Public License                                                                                                                                                                                                                                                           
      20                 :  along with this program; if not, write to the Free Software                                                                                                                                                                                                                                                                 
      21                 :  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.                                                                                                                                                                                                                                                 
      22                 :  +--------------------------------------------------------------------------*/                                                                                                                                                                                                                                               
      23                 : /**                                                                                                                                                                                                                                                                                                                          
      24                 :  * Klasse zum Verwalten der Team-Zuordnungen der Teilnehmer.                                                                                                                                                                                                                                                                 
      25                 :  * @package eStudy.Teams                                                                                                                                                                                                                                                                                                     
      26                 :  * @version 0.3, 19/11/06                                                                                                                                                                                                                                                                                                    
      27                 :  * @author Clemens Weiß <clemens.weiss@mni.fh-giessen.de>                                                                                                                                                                                                                                                                   
      28                 :  */                                                                                                                                                                                                                                                                                                                          
      29                 : if(! defined("PATH_TO_ROOT")) define("PATH_TO_ROOT","../../");                                                                                                                                                                                                                                                               
      30                 : require_once (PATH_TO_ROOT."teams/classes/class.teamlist.inc.php");                                                                                                                                                                                                                                                          
      31                 : require_once (PATH_TO_ROOT."courses/classes/class.Course.inc.php");                                                                                                                                                                                                                                                          
      32                 : require_once (PATH_TO_ROOT."roleplay/classes/class.userrolemanagement.inc.php");                                                                                                                                                                                                                                             
      33                 :                                                                                                                                                                                                                                                                                                                              
      34                 : class UserTeamManagement {                                                                                                                                                                                                                                                                                                   
      35                 :     /**                                                                                                                                                                                                                                                                                                                      
      36                 :      * ID des Kurses, für den die Team-Zuordnungen verwaltet werden sollen                                                                                                                                                                                                                                                  
      37                 :      * @var int                                                                                                                                                                                                                                                                                                              
      38                 :      * @access private                                                                                                                                                                                                                                                                                                       
      39                 :      */                                                                                                                                                                                                                                                                                                                      
      40                 :     private $courseID;                                                                                                                                                                                                                                                                                                       
      41                 :     /**                                                                                                                                                                                                                                                                                                                      
      42                 :      * Array mit den Vor- und Nachnamen aller Kurs-Mitglieder                                                                                                                                                                                                                                                                
      43                 :      * @var array                                                                                                                                                                                                                                                                                                            
      44                 :      * @access private                                                                                                                                                                                                                                                                                                       
      45                 :      */                                                                                                                                                                                                                                                                                                                      
      46                 :     private $users;                                                                                                                                                                                                                                                                                                          
      47                 :     /**                                                                                                                                                                                                                                                                                                                      
      48                 :      * Konstruktor                                                                                                                                                                                                                                                                                                           
      49                 :      * @access public                                                                                                                                                                                                                                                                                                        
      50                 :      * @param int $courseID ID des Kurses, für den die Team-Zuordnungen verwaltet werden sollen                                                                                                                                                                                                                             
      51                 :      */                                                                                                                                                                                                                                                                                                                      
      52                 :     public function UserTeamManagement($courseID) {                                                                                                                                                                                                                                                                          
      53               0 :         $this->courseID = (int)$courseID;                                                                                                                                                                                                                                                                                    
      54               0 :         $this->users = array();                                                                                                                                                                                                                                                                                              
      55               0 :         $users = Course::getParticipants($this->courseID, "all", "user.Nachname, user.Vorname");                                                                                                                                                                                                                             
      56               0 :         if (is_array($users)) {                                                                                                                                                                                                                                                                                              
      57               0 :             foreach($users as $user) {                                                                                                                                                                                                                                                                                       
      58               0 :                 $this->users[(int)$user->userid] = "$user->lastname, $user->firstname";                                                                                                                                                                                                                                      
      59               0 :             }                                                                                                                                                                                                                                                                                                                
      60               0 :         }                                                                                                                                                                                                                                                                                                                    
      61               0 :     }                                                                                                                                                                                                                                                                                                                        
      62                 :     /**                                                                                                                                                                                                                                                                                                                      
      63                 :      * Gibt das Team-Objekt eines Benutzers zurück oder 0, falls der                                                                                                                                                                                                                                                        
      64                 :      * Benutzer zu keinem Team gehört.                                                                                                                                                                                                                                                                                      
      65                 :      *                                                                                                                                                                                                                                                                                                                       
      66                 :      * @access public                                                                                                                                                                                                                                                                                                        
      67                 :      * @param int $userID ID des Benutzers                                                                                                                                                                                                                                                                                   
      68                 :      * @return mixed Team-Objekt des Benutzers oder 0 oder false bei ungültiger User-ID                                                                                                                                                                                                                                     
      69                 :      */                                                                                                                                                                                                                                                                                                                      
      70                 :     public function getTeamOfUser($userID) {                                                                                                                                                                                                                                                                                 
      71               0 :         global $db, $settings;                                                                                                                                                                                                                                                                                               
      72               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                        
      73               0 :         if (strval(intval($userID)) != $userID || $userID <= 0) {                                                                                                                                                                                                                                                            
      74               0 :             return false;                                                                                                                                                                                                                                                                                                    
      75                 :         }                                                                                                                                                                                                                                                                                                                    
      76               0 :         $teamID = $db->get_var("SELECT team_id FROM {$dbp}user_team JOIN {$dbp}teams ON id=team_id WHERE user_id='$userID' AND course_id='$this->courseID'");                                                                                                                                                                
      77               0 :         if ($teamID > 0) {                                                                                                                                                                                                                                                                                                   
      78               0 :             return new Team($teamID);                                                                                                                                                                                                                                                                                        
      79                 :         }                                                                                                                                                                                                                                                                                                                    
      80               0 :         return 0;                                                                                                                                                                                                                                                                                                            
      81                 :     }                                                                                                                                                                                                                                                                                                                        
      82                 :     /**                                                                                                                                                                                                                                                                                                                      
      83                 :      * Gibt die User-IDs der Team-Mitglieder in einem Array zurück.                                                                                                                                                                                                                                                         
      84                 :      *                                                                                                                                                                                                                                                                                                                       
      85                 :      * @access public                                                                                                                                                                                                                                                                                                        
      86                 :      * @param int $teamID ID des Teams                                                                                                                                                                                                                                                                                       
      87                 :      * @return mixed Array mit Integer-IDs oder false bei ungültiger Team-ID                                                                                                                                                                                                                                                
      88                 :      */                                                                                                                                                                                                                                                                                                                      
      89                 :     public function getUsersOfTeam($teamID) {                                                                                                                                                                                                                                                                                
      90               0 :         global $db, $settings;                                                                                                                                                                                                                                                                                               
      91               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                        
      92               0 :         if (strval(intval($teamID)) != $teamID || $teamID <= 0) {                                                                                                                                                                                                                                                            
      93               0 :             return false;                                                                                                                                                                                                                                                                                                    
      94                 :         }                                                                                                                                                                                                                                                                                                                    
      95               0 :         $userIDs = $db->get_col("SELECT user_id FROM {$dbp}user_team ut JOIN {$dbp}user u ON ut.user_id=u.ID WHERE ut.team_id='$teamID' ORDER BY Nachname, Vorname");                                                                                                                                                        
      96               0 :         if (is_array($userIDs)) {                                                                                                                                                                                                                                                                                            
      97               0 :             $userIDs = array_map("intval", $userIDs);                                                                                                                                                                                                                                                                        
      98               0 :             return $userIDs;                                                                                                                                                                                                                                                                                                 
      99                 :         }                                                                                                                                                                                                                                                                                                                    
     100               0 :         return array();                                                                                                                                                                                                                                                                                                      
     101                 :     }                                                                                                                                                                                                                                                                                                                        
     102                 :     /**                                                                                                                                                                                                                                                                                                                      
     103                 :      * Listet alle Teams dieses Kurses inkl. der Mitglieder und freien Plätze auf.                                                                                                                                                                                                                                          
     104                 :      *                                                                                                                                                                                                                                                                                                                       
     105                 :      * @access public                                                                                                                                                                                                                                                                                                        
     106                 :      * @return void                                                                                                                                                                                                                                                                                                          
     107                 :      */                                                                                                                                                                                                                                                                                                                      
     108                 :     public function listTeams() {                                                                                                                                                                                                                                                                                            
     109               0 :         global $db, $settings;                                                                                                                                                                                                                                                                                               
     110               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                        
     111               0 :         $urm = new UserRoleManagement($this->courseID);                                                                                                                                                                                                                                                                      
     112               0 :         $output = "<ul class='teamsOverview'>\n";                                                                                                                                                                                                                                                                            
     113               0 :         foreach(TeamList::getTeams($this->courseID) as $team) {                                                                                                                                                                                                                                                              
     114               0 :             $userIDs = $this->getUsersOfTeam($team->getID());                                                                                                                                                                                                                                                                
     115               0 :             $available = $team->getMaxMembers() -count($userIDs);                                                                                                                                                                                                                                                            
     116               0 :             $output .= "<li>".Data::toHTML($team->getName(), false);                                                                                                                                                                                                                                                         
     117               0 :             if ($available == 1) {                                                                                                                                                                                                                                                                                           
     118               0 :                 $output .= " (noch <strong>1</strong> freier Platz)";                                                                                                                                                                                                                                                        
     119               0 :             } elseif ($available > 0) {                                                                                                                                                                                                                                                                                      
     120               0 :                 $output .= " (noch <strong>$available</strong> freie Pl&auml;tze)";                                                                                                                                                                                                                                          
     121               0 :             } elseif ($team->getMaxMembers() == 0) {                                                                                                                                                                                                                                                                         
     122               0 :                 $output .= " (noch <strong>beliebig viele</strong> freie Pl&auml;tze)";                                                                                                                                                                                                                                      
     123               0 :             } else {                                                                                                                                                                                                                                                                                                         
     124               0 :                 $output .= " (alle Pl&auml;tze belegt)";                                                                                                                                                                                                                                                                     
     125                 :             }                                                                                                                                                                                                                                                                                                                
     126               0 :             $teamID = (int)$team->getID();                                                                                                                                                                                                                                                                                   
     127               0 :             $crp = (int)$db->get_var("SELECT SUM(CrP) FROM user_team WHERE team_id='$teamID'");                                                                                                                                                                                                                              
     128               0 :             if ($crp > 0) {                                                                                                                                                                                                                                                                                                  
     129               0 :                 $output .= " <strong>$crp CrP </strong> (entsprechen ";                                                                                                                                                                                                                                                      
     130               0 :                 $output .= $crp * 30;                                                                                                                                                                                                                                                                                        
     131               0 :                 $output .= " Arbeitsstunden)";                                                                                                                                                                                                                                                                               
     132               0 :             }                                                                                                                                                                                                                                                                                                                
     133               0 :             if (count($userIDs)) {                                                                                                                                                                                                                                                                                           
     134               0 :                 $output .= "<ul>";                                                                                                                                                                                                                                                                                           
     135               0 :                 foreach($userIDs as $userID) {                                                                                                                                                                                                                                                                               
     136               0 :                     $data = $db->get_row("SELECT CrP, editCalendar FROM {$dbp}user_team WHERE user_id='$userID' AND team_id='$teamID'");                                                                                                                                                                                     
     137               0 :                     $userCrp = (int)$data->CrP;                                                                                                                                                                                                                                                                              
     138               0 :                     $editCalendar = $data->editCalendar;                                                                                                                                                                                                                                                                     
     139               0 :                     $output .= "<li>";                                                                                                                                                                                                                                                                                       
     140               0 :                     if ($userCrp > 0) {                                                                                                                                                                                                                                                                                      
     141               0 :                         $output .= "$userCrp CrP ";                                                                                                                                                                                                                                                                          
     142               0 :                     }                                                                                                                                                                                                                                                                                                        
     143               0 :                     $output .= "<a href='".PATH_TO_ROOT."user/homepage.php?user=$userID'>".Data::toHTML($this->users[$userID], false) ."</a>";                                                                                                                                                                               
     144               0 :                     if ($roles = $urm->getRolesOfUser((int)$userID, true)) {                                                                                                                                                                                                                                                 
     145               0 :                         $gender = $db->get_var("SELECT gender FROM {$dbp}user WHERE ID='$userID'");                                                                                                                                                                                                                          
     146               0 :                         $role = array_pop($roles);                                                                                                                                                                                                                                                                           
     147               0 :                         $output .= " (".$role["role"]->getPropertiesLink($role["role"]->getName($gender)) .")";                                                                                                                                                                                                              
     148               0 :                     }                                                                                                                                                                                                                                                                                                        
     149                 :                     // Teamtermine eintragen                                                                                                                                                                                                                                                                                 
     150               0 :                     if ($editCalendar != null) {                                                                                                                                                                                                                                                                             
     151               0 :                         $currentUser = Data::toMysql($_SESSION['userid']);                                                                                                                                                                                                                                                   
     152               0 :                         $userList = $db->get_col("SELECT user_id FROM {$dbp}user_team WHERE user_id='$currentUser' AND team_id='$teamID'");                                                                                                                                                                                  
     153               0 :                         if ($userList != null || $_SESSION['usergroup'] == DOZENT || $_SESSION['usergroup'] == ADMIN) {                                                                                                                                                                                                      
     154               0 :                             if ($editCalendar == "1") {                                                                                                                                                                                                                                                                      
     155               0 :                                 $output .= " (<a href=\"javascript:editNot(".$userID.",".$teamID.");\" title=\"Teamtermine nicht mehr editieren d&uuml;rfen\">darf Teamtermine eintragen</a>)";                                                                                                                              
     156               0 :                             } else {                                                                                                                                                                                                                                                                                         
     157               0 :                                 $output .= " (<a href=\"javascript:editDo(".$userID.",".$teamID.");\" title=\"Teamtermine editieren d&uuml;rfen\">darf keine Teamtermine eintragen</a>)";                                                                                                                                    
     158                 :                             }                                                                                                                                                                                                                                                                                                
     159               0 :                         } else if ($userList == null && ($_SESSION['usergroup'] == DOZENT || $_SESSION['usergroup'] == ADMIN)) {                                                                                                                                                                                             
     160               0 :                             if ($editCalendar == "1") {                                                                                                                                                                                                                                                                      
     161               0 :                                 $output .= " (darf Teamtermine eintragen)";                                                                                                                                                                                                                                                  
     162               0 :                             } else {                                                                                                                                                                                                                                                                                         
     163               0 :                                 $output .= " (darf keine Teamtermine eintragen)";                                                                                                                                                                                                                                            
     164                 :                             }                                                                                                                                                                                                                                                                                                
     165               0 :                         }                                                                                                                                                                                                                                                                                                    
     166               0 :                     }                                                                                                                                                                                                                                                                                                        
     167               0 :                     $output .= "</li>\n";                                                                                                                                                                                                                                                                                    
     168               0 :                 }                                                                                                                                                                                                                                                                                                            
     169               0 :                 $output .= "</ul>\n";                                                                                                                                                                                                                                                                                        
     170               0 :             }                                                                                                                                                                                                                                                                                                                
     171               0 :             $output .= "</li>\n";                                                                                                                                                                                                                                                                                            
     172               0 :         }                                                                                                                                                                                                                                                                                                                    
     173               0 :         $output .= "</ul>";                                                                                                                                                                                                                                                                                                  
     174               0 :         return $output;                                                                                                                                                                                                                                                                                                      
     175                 :     }                                                                                                                                                                                                                                                                                                                        
     176                 :     /**                                                                                                                                                                                                                                                                                                                      
     177                 :      * Zeigt das Formular an, mit dem sich der Benutzer selbst einem Team zuordnen kann oder                                                                                                                                                                                                                                 
     178                 :      * einen Hinweis, falls es keine Teams mit freien Plätzen mehr gibt.                                                                                                                                                                                                                                                    
     179                 :      *                                                                                                                                                                                                                                                                                                                       
     180                 :      * @access public                                                                                                                                                                                                                                                                                                        
     181                 :      * @return void                                                                                                                                                                                                                                                                                                          
     182                 :      */                                                                                                                                                                                                                                                                                                                      
     183                 :     public function showUserTeamForm() {                                                                                                                                                                                                                                                                                     
     184               0 :         $teams = TeamList::getTeams($this->courseID);                                                                                                                                                                                                                                                                        
     185               0 :         if (count($teams)) {                                                                                                                                                                                                                                                                                                 
     186               0 :             $output = "<form action='".PATH_TO_ROOT.SCRIPT_NAME."' method='post'>"."<ul class='teamsOverview'>\n";                                                                                                                                                                                                           
     187               0 :             $closingDate = TeamList::getTeamClosingDate($this->courseID);                                                                                                                                                                                                                                                    
     188               0 :             $time = time();                                                                                                                                                                                                                                                                                                  
     189               0 :             if ($closingDate > $time) {                                                                                                                                                                                                                                                                                      
     190               0 :                 $output .= "<li><input type='radio' name='team' id='team0' value='0' ".(!isset($_SESSION["teamID"]) ? "checked='checked' " : "") ."/> "."<label for='team0'><em>Kein Team</em></label>";                                                                                                                     
     191               0 :             }                                                                                                                                                                                                                                                                                                                
     192               0 :             $count = 0;                                                                                                                                                                                                                                                                                                      
     193               0 :             foreach($teams as $team) {                                                                                                                                                                                                                                                                                       
     194               0 :                 $teamID = $team->getID();                                                                                                                                                                                                                                                                                    
     195               0 :                 $userIDs = $this->getUsersOfTeam($team->getID());                                                                                                                                                                                                                                                            
     196               0 :                 $available = $team->getMaxMembers() - count($userIDs);                                                                                                                                                                                                                                                       
     197               0 :                 if ($available > 0 || $team->getMaxMembers() == 0 || (in_array($_SESSION["userid"], $userIDs) && $closingDate > $time)) {                                                                                                                                                                                    
     198               0 :                     $output .= "<li><input type='radio' name='team' id='team$teamID' value='".$teamID."' ".(isset($_SESSION["teamID"]) && $_SESSION["teamID"] == $teamID ? "checked='checked' " : "") ."/> "."<label for='team".$teamID."'>".Data::toHTML($team->getName(), false) ."</label>";                              
     199               0 :                     $count++;                                                                                                                                                                                                                                                                                                
     200               0 :                     if (count($userIDs)) {                                                                                                                                                                                                                                                                                   
     201               0 :                         $output .= "<ul>";                                                                                                                                                                                                                                                                                   
     202               0 :                         foreach($userIDs as $userID) {                                                                                                                                                                                                                                                                       
     203               0 :                             $output .= "<li><a href='".PATH_TO_ROOT."user/homepage.php?user=$userID'>".Data::toHTML($this->users[$userID], false) ."</a></li>\n";                                                                                                                                                            
     204               0 :                         }                                                                                                                                                                                                                                                                                                    
     205               0 :                         $output .= "</ul>\n";                                                                                                                                                                                                                                                                                
     206               0 :                     }                                                                                                                                                                                                                                                                                                        
     207               0 :                     $output .= "</li>\n";                                                                                                                                                                                                                                                                                    
     208               0 :                 }                                                                                                                                                                                                                                                                                                            
     209               0 :             }                                                                                                                                                                                                                                                                                                                
     210               0 :             $output .= "</ul>\n";                                                                                                                                                                                                                                                                                            
     211               0 :             if ($count) {                                                                                                                                                                                                                                                                                                    
     212               0 :                 $output .= "<p class='pForm'><input type='submit' name='okButton' value='Speichern' /></p>";                                                                                                                                                                                                                 
     213               0 :             } else {                                                                                                                                                                                                                                                                                                         
     214               0 :                 $output .= "<p>Leider sind keine Pl&auml;tze in Teams mehr frei.</p>";                                                                                                                                                                                                                                       
     215                 :             }                                                                                                                                                                                                                                                                                                                
     216               0 :             $output .= "</form>";                                                                                                                                                                                                                                                                                            
     217               0 :         } else {                                                                                                                                                                                                                                                                                                             
     218               0 :             $output .= "<p>Es wurden noch keine Teams angelegt.</p>";                                                                                                                                                                                                                                                        
     219                 :         }                                                                                                                                                                                                                                                                                                                    
     220               0 :         return $output;                                                                                                                                                                                                                                                                                                      
     221                 :     }                                                                                                                                                                                                                                                                                                                        
     222                 :     /**                                                                                                                                                                                                                                                                                                                      
     223                 :      * Speichert eine Team-Zuordnung mit allen notwendigen Überprüfungen.                                                                                                                                                                                                                                                  
     224                 :      * Wird 0 als Team-ID übergeben, wird die Team-Zugehörigkeit des Benutzers gelöscht.                                                                                                                                                                                                                                  
     225                 :      *                                                                                                                                                                                                                                                                                                                       
     226                 :      * @access public                                                                                                                                                                                                                                                                                                        
     227                 :      * @param int $userID ID des Benutzers                                                                                                                                                                                                                                                                                   
     228                 :      * @param int $teamID ID des Teams oder 0                                                                                                                                                                                                                                                                                
     229                 :      * @return mixed true bei Erfolg oder String mit Fehlermeldung                                                                                                                                                                                                                                                           
     230                 :      */                                                                                                                                                                                                                                                                                                                      
     231                 :     public function setTeamForUser($userID, $teamID) {                                                                                                                                                                                                                                                                       
     232               0 :         global $db, $settings, $EZSQL_ERROR;                                                                                                                                                                                                                                                                                 
     233               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                        
     234               0 :         if (strval(intval($userID)) != $userID || !in_array($userID, array_keys($this->users))) {                                                                                                                                                                                                                            
     235               0 :             return "Ungültige User-ID";                                                                                                                                                                                                                                                                                     
     236                 :         }                                                                                                                                                                                                                                                                                                                    
     237               0 :         $teams = TeamList::getTeams($this->courseID);                                                                                                                                                                                                                                                                        
     238               0 :         if ($teamID > 0) {                                                                                                                                                                                                                                                                                                   
     239               0 :             if (strval(intval($teamID)) != $teamID || !in_array($teamID, array_keys($teams))) {                                                                                                                                                                                                                              
     240               0 :                 return "Ungültige Team-ID";                                                                                                                                                                                                                                                                                 
     241                 :             }                                                                                                                                                                                                                                                                                                                
     242               0 :             if (TeamList::getTeamClosingDate($this->courseID) < time() && $this->getTeamOfUser($userID) !== 0) {                                                                                                                                                                                                             
     243               0 :                 return "Sie sind bereits Mitglied in einem Team.";                                                                                                                                                                                                                                                           
     244                 :             }                                                                                                                                                                                                                                                                                                                
     245               0 :             $team = new Team($teamID);                                                                                                                                                                                                                                                                                       
     246               0 :             if ($team->getMaxMembers() != 0 && count($this->getUsersOfTeam($teamID)) >= $team->getMaxMembers()) {                                                                                                                                                                                                            
     247               0 :                 return "In dem Team ist leider kein Platz mehr.";                                                                                                                                                                                                                                                            
     248                 :             }                                                                                                                                                                                                                                                                                                                
     249               0 :         }                                                                                                                                                                                                                                                                                                                    
     250               0 :         $errorCount = count($EZSQL_ERROR);                                                                                                                                                                                                                                                                                   
     251               0 :         $db->query("DELETE FROM {$dbp}user_team WHERE user_id='$userID' AND team_id IN (".implode(", ", array_keys($teams)) .")");                                                                                                                                                                                           
     252               0 :         if ($teamID > 0) {                                                                                                                                                                                                                                                                                                   
     253               0 :             $db->query("INSERT INTO {$dbp}user_team (user_id, team_id) VALUES ('$userID', '$teamID')");                                                                                                                                                                                                                      
     254               0 :         }                                                                                                                                                                                                                                                                                                                    
     255               0 :         if (count($EZSQL_ERROR) > $errorCount) {                                                                                                                                                                                                                                                                             
     256               0 :             return "Datenbank-Fehler";                                                                                                                                                                                                                                                                                       
     257                 :         }                                                                                                                                                                                                                                                                                                                    
     258               0 :         return true;                                                                                                                                                                                                                                                                                                         
     259                 :     }                                                                                                                                                                                                                                                                                                                        
     260                 :     /**                                                                                                                                                                                                                                                                                                                      
     261                 :      * Gibt für jedes Team in diesem Kurs eine select-Box aus, in der                                                                                                                                                                                                                                                       
     262                 :      * aus allen Kurs-Mitgliedern ausgewählt werden kann, wer dem Team zugeordnet ist.                                                                                                                                                                                                                                      
     263                 :      *                                                                                                                                                                                                                                                                                                                       
     264                 :      * @access public                                                                                                                                                                                                                                                                                                        
     265                 :      * @return void                                                                                                                                                                                                                                                                                                          
     266                 :      */                                                                                                                                                                                                                                                                                                                      
     267                 :     public function showTeamAssignmentForms() {                                                                                                                                                                                                                                                                              
     268               0 :         $size = count($this->users);                                                                                                                                                                                                                                                                                         
     269               0 :         if ($size > 8) $size = 8;                                                                                                                                                                                                                                                                                            
     270               0 :         $output = "";                                                                                                                                                                                                                                                                                                        
     271               0 :         foreach(TeamList::getTeams($this->courseID) as $team) {                                                                                                                                                                                                                                                              
     272               0 :             $userIDs = $this->getUsersOfTeam($team->getID());                                                                                                                                                                                                                                                                
     273               0 :             $output .= "<form action='".PATH_TO_ROOT.SCRIPT_NAME."' method='post' class='teamAssignmentForm'><p>\n"."<input type='hidden' name='teamID' value='".$team->getID() ."' />\n"."<strong>".Data::toHTML($team->getName(), false) ."</strong><br />\n"."<select name='users[]' size='$size' multiple='multiple'>\n";
     274               0 :             foreach($this->users as $userID => $userName) {                                                                                                                                                                                                                                                                  
     275               0 :                 $output .= "<option value='$userID'".(in_array($userID, $userIDs) ? " selected='selected'" : "") .">".Data::toHTML($userName, false) ."</option>\n";                                                                                                                                                         
     276               0 :             }                                                                                                                                                                                                                                                                                                                
     277               0 :             $output .= "</select><br />"."<input type='submit' name='okButton' value='Speichern' /> "."<input type='reset' value='Auswahl zur&uuml;cksetzen' />"."</p></form>\n";                                                                                                                                            
     278               0 :         }                                                                                                                                                                                                                                                                                                                    
     279               0 :         return $output;                                                                                                                                                                                                                                                                                                      
     280                 :     }                                                                                                                                                                                                                                                                                                                        
     281                 :     /**                                                                                                                                                                                                                                                                                                                      
     282                 :      * Ordnet alle im Array angegebenen Benutzer-IDs dem angegebenen Team zu.                                                                                                                                                                                                                                                
     283                 :      * Bestehende Zuordnungen von Benutzern, die nicht im Array enthalten sind,                                                                                                                                                                                                                                              
     284                 :      * werden gelöscht.                                                                                                                                                                                                                                                                                                     
     285                 :      *                                                                                                                                                                                                                                                                                                                       
     286                 :      * @access public                                                                                                                                                                                                                                                                                                        
     287                 :      * @param int $teamID ID des Teams, zu dem die Benutzer zugeordnet werden sollen                                                                                                                                                                                                                                         
     288                 :      * @param array $users Array von Benutzer-IDs, die dem Team zugeordnet werden sollen                                                                                                                                                                                                                                     
     289                 :      * @return mixed true bei Erfolg, sonst String mit Fehlermeldung                                                                                                                                                                                                                                                         
     290                 :      */                                                                                                                                                                                                                                                                                                                      
     291                 :     public function assignUsersToTeam($teamID, $users) {                                                                                                                                                                                                                                                                     
     292               0 :         global $db, $settings, $EZSQL_ERROR;                                                                                                                                                                                                                                                                                 
     293               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                        
     294               0 :         if (strval(intval($teamID)) != $teamID || $teamID <= 0 || !is_array($users)) {                                                                                                                                                                                                                                       
     295               0 :             return "Ungültige Übergabe-Werte";                                                                                                                                                                                                                                                                             
     296                 :         }                                                                                                                                                                                                                                                                                                                    
     297               0 :         $users = array_map("intval", $users);                                                                                                                                                                                                                                                                                
     298               0 :         if (count(array_diff($users, array_keys($this->users)))) {                                                                                                                                                                                                                                                           
     299               0 :             return "Einer der Benutzer ist nicht Mitglied dieses Kurses.";                                                                                                                                                                                                                                                   
     300                 :         }                                                                                                                                                                                                                                                                                                                    
     301               0 :         $oldUsers = $this->getUsersOfTeam($teamID);                                                                                                                                                                                                                                                                          
     302               0 :         $insert = array_diff($users, $oldUsers);                                                                                                                                                                                                                                                                             
     303               0 :         $delete = array_diff($oldUsers, $users);                                                                                                                                                                                                                                                                             
     304               0 :         $team = new Team($teamID);                                                                                                                                                                                                                                                                                           
     305               0 :         if ($team->getMaxMembers() > 0 && (count($oldUsers) +count($insert) -count($delete)) > $team->getMaxMembers()) {                                                                                                                                                                                                     
     306               0 :             return "Die maximale Teilnehmerzahl dieses Teams beträgt ".$team->getMaxMembers();                                                                                                                                                                                                                              
     307                 :         }                                                                                                                                                                                                                                                                                                                    
     308               0 :         foreach($insert as $userID) {                                                                                                                                                                                                                                                                                        
     309               0 :             if ($this->getTeamOfUser($userID) !== 0) {                                                                                                                                                                                                                                                                       
     310               0 :                 return "Der Benutzer ".$this->users[$userID]." ist bereits Mitglied in einem Team.";                                                                                                                                                                                                                         
     311                 :             }                                                                                                                                                                                                                                                                                                                
     312               0 :         }                                                                                                                                                                                                                                                                                                                    
     313               0 :         $errorCount = count($EZSQL_ERROR);                                                                                                                                                                                                                                                                                   
     314               0 :         if (count($insert)) {                                                                                                                                                                                                                                                                                                
     315               0 :             $db->query("INSERT INTO {$dbp}user_team (user_id, team_id) VALUES ('".implode("', '$teamID'), ('", $insert) ."', '$teamID')");                                                                                                                                                                                   
     316               0 :         }                                                                                                                                                                                                                                                                                                                    
     317               0 :         if (count($delete)) {                                                                                                                                                                                                                                                                                                
     318               0 :             $db->query("DELETE FROM {$dbp}user_team WHERE user_id IN (".implode(", ", $delete) .") AND team_id='$teamID'");                                                                                                                                                                                                  
     319               0 :         }                                                                                                                                                                                                                                                                                                                    
     320               0 :         if (count($EZSQL_ERROR) > $errorCount) {                                                                                                                                                                                                                                                                             
     321               0 :             return "Datenbank-Fehler";                                                                                                                                                                                                                                                                                       
     322                 :         }                                                                                                                                                                                                                                                                                                                    
     323               0 :         return true;                                                                                                                                                                                                                                                                                                         
     324                 :     }                                                                                                                                                                                                                                                                                                                        
     325                 :     /**                                                                                                                                                                                                                                                                                                                      
     326                 :      * Gibt die IDs der Benutzer dieses Kurses zurück, die sich in ein Team einwählen können.                                                                                                                                                                                                                             
     327                 :      * Das kann z.B. für die Prüfung von Zugriffsrechten verwendet werden.                                                                                                                                                                                                                                                 
     328                 :      *                                                                                                                                                                                                                                                                                                                       
     329                 :      * @access public                                                                                                                                                                                                                                                                                                        
     330                 :      * @return array Array mit User-IDs                                                                                                                                                                                                                                                                                      
     331                 :      */                                                                                                                                                                                                                                                                                                                      
     332                 :     public function getUserIDs() {                                                                                                                                                                                                                                                                                           
     333               0 :         return array_keys($this->users);                                                                                                                                                                                                                                                                                     
     334                 :     }                                                                                                                                                                                                                                                                                                                        
     335                 : }                                                                                                                                                                                                                                                                                                                            
     336                 :                                                                                                                                                                                                                                                                                                                              

Generated by PHPUnit 3.2.21 and Xdebug 2.0.3 at Thu Nov 26 17:01:15 CET 2009.